/**
 * WebSocket工具类
 * @param {Object} params
 * wsUrl:连接的WebSocket地址
 * debug:为true的时候则打印控制台信息
 */
function WebSocketUtil(params) {
	params = !params ? {} : params;
	var ws;
	if("WebSocket" in window == false) {
		console.error("当前浏览器不支持WebSocket");
	} else if(!params.wsUrl) {
		console.error("当前WebSocket路径为空，创建连接失败");
	} else {
		ws = new WebSocket(params.wsUrl);
		// 连接建立时触发的方法
		ws.onopen = function(event) {
			printConsoleLog("连接建立时触发");
			if("function" == typeof params.onopen) {
				params.onopen(event);
			}
		};
		// 客户端接收服务端数据时触发的方法
		ws.onmessage = function(event) {
			printConsoleLog("客户端接收服务端数据时触发");
			if("function" == typeof params.onmessage) {
				params.onmessage(event);
			}
		};
		// 通信发生错误时触发的方法
		ws.onerror = function(event) {
			printConsoleLog("通信发生错误时触发");
			if("function" == typeof params.onerror) {
				params.onerror(event);
			}
		};
		// 连接关闭时触发的方法
		ws.onclose = function(event) {
			printConsoleLog("连接关闭时触发");
			if("function" == typeof params.onclose) {
				params.onclose(event);
			}
		};
	}
	// 发送数据
	this.sendData = function(data) {
		ws.send(data);
	};
	// 关闭连接
	this.close = function() {
		ws.close();
	};
	// 判断当前WebSocket状态
	this.judgeWebSocketState = function() {
		var state = -1;
		switch(ws.readyState) {
			case 0:
				state = 0; // 连接尚未建立
				break;
			case 1:
				state = 1; // 连接已建立，可以进行通信
				break;
			case 2:
				state = 2; // 连接正在进行关闭
				break;
			case 3:
				state = 3; // 连接已经关闭或者连接不能打开
				break;
			default:
				console.error("WebSocket未初始化");
				break;
		}
		return state;
	}
	
	// 输出控制台信息
	function printConsoleLog(msg) {
		if(params.debug === true) {
			console.log(msg);
		}
	}
}